/**
 * 项目名称:
 *
 * @Author: 夏国倩
 * @Date: 2023/9/18 14:08
 * @Copyright
 */
package Package;
/*
1、自动装箱和自动拆箱是程序编译阶段的一个概念
2、自动装箱和自动拆箱是为了方便程序员编码
 */
public class IntegerTest5 {
    public static void main(String[] args) {
        Integer i1=new Integer(10);
        Integer i2=new Integer(10);
        //”==“比较的是对象的引用 不同的对象有不同的引用，所以进行比较的时候会返回false
        System.out.println(i1==i2); //进行比较 输出false  因为i1和i2是两个对象，对象的引用不同

        //比较两个Integer类型的数据是否相等，是不能用”==“的
        //Integer已经重写了Object中的equals方法
        System.out.println(i1.equals(i2)); //输出true

        //重点：
        Integer i3=128;
        Integer i4=128;
        //上面的等同于
        //Integer i3=new Integer(128);
        //Integer i4=new Integer(128);
        System.out.println(i3==i4); //输出false

        //如果数据是在-128~127之间，Java中引入了一个”整型常量池“，在方法区中，该整型常量池只存储-128~127之间的数据
        Integer i5=127; //这行代码不会在堆中创建对象，会直接从常量池中拿
        Integer i6=127;

        System.out.println("i5==i6  "+(i5==i6)); //输出true

        Integer i7=-128;
        Integer i8=-128;

        System.out.println("i7==i8  "+(i7==i8)); //输出true

        Integer i9=-129;
        Integer i10=-129;

        System.out.println("i9==i10  "+(i9==i10)); //输出false
    }
}
